package com.summer.framework.core.tenant.context;

import com.alibaba.ttl.TransmittableThreadLocal;

/**
 * Description: 租户信息缓存
 * @auther Ice Yang
 * Date 2025/7/2 17:03
 */
public class TenantContext {

    private static final ThreadLocal<String> TENANT_ID = new TransmittableThreadLocal<>();

    private static final ThreadLocal<Boolean> TENANT_FLAG = new TransmittableThreadLocal<>();

    /**
     * 获取当前租户ID
     * @return 租户id
     */
    public static String getTenantId() {
        return TENANT_ID.get();
    }

    /**
     * 设置当前租户ID
     * @param tenantId 租户id
     */
    public static void setTenantId(String tenantId) {
        TENANT_ID.set(tenantId);
    }

    /**
     * 清空当前租户ID
     */
    public static void clear() {
        TENANT_ID.remove();
    }

    /**
     * 是否跳过多租户信息 标识 true 跳过 ，false 不跳过
     * @return 结果
     */
    public static Boolean getTenantFlag() {
    	return TENANT_FLAG.get() != null && TENANT_FLAG.get();
    }

    /**
     * 设置是否跳过多租户信息 标识 true 跳过 ，false 不跳过
     * @param flag true or false
     */
    public static void setTenantFlag(Boolean flag) {
    	TENANT_FLAG.set(flag);
    }

    public static void clearFlag() {
        TENANT_FLAG.remove();
    }
}
